約 5,030,036 件
https://w.atwiki.jp/sora083/pages/13.html
Mac Macports 環境変数の設定 export PATH=/opt/local/bin /opt/local/sbin $PATH export MANPATH=/opt/local/man $MANPATH command MacPorts自身とそのリストを最新の状態に更新するコマンド $ sudo port selfupdate インストールしたいパッケージを探すコマンド $ port search 検索語句 パッケージをインストールするコマンド $ sudo port install パッケージ名 パッケージをアンインストールするコマンド $ sudo port uninstall パッケージ名 Linux コマンド ユーザごとのプロセスをまとめてkill skill -KILL -u ユーザ名 oracle PL/SQL htp.print → 動的パラメータ MySQL ■MySQL ◯MAMP-ターミナルから起動 /Applications/MAMP/Library/bin/mysql -u root -p root ◯データベースに接続 use データベース名 ◯テーブル作成例 create table book_data ( no INT(4) ,genre VARCHAR(128) ,title VARCHAR(128) ,contents VARCHAR(256) ,others VARCHAR(256) ,regist_date DATE ); ◯INSERT INSERT INTO BOOK_DATA (NO ,GENRE ,TITLE ,CONTENTS ,OTHERS ,REGIST_DATE) VALUES (1 , TEST , TEST , TEST , TEST ,SYSDATE()); ◯Tips 現在時刻の取得 sysdate() Postfix 【基本設定】 postfixの場所 /etc/postfix main.cf /etc/postfix/main.cf ◯追記 ###MacOSXSABA_main.cf_Start### inet_interfaces=all mynetworks_style=subnet mydomain=あなたのドメインネーム myhostname=あなたのドメインネーム smtpd_tls_cert_file=/System/Library/OpenSSL/certs/server.crt smtpd_tls_key_file=/System/Library/OpenSSL/certs/server.key smtpd_tls_loglevel=1 smtpd_use_tls=yes smtpd_tls_session_cache_database = btree /etc/postfix/smtpd_scache tls_random_source = dev /dev/urandom smtpd_sasl_auth_enable=yes smtpd_use_pw_server=yes enable_server_options=yes smtpd_pw_server_security_options=plain, login, cram-md5 smtpd_sasl_security_options=noanonymous, noplaintext broken_sasl_auth_clients=yes smtpd_recipient_restrictions=permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination smtpd_sasl_local_domain=$mydomain ###MacOSXSABA_main.cf_End### master.cf ◯コメントアウト #submission inet n - n - - smtpd ◯追記 ※↑のすぐ下 -o smtpd_tls_security_level=may 【SSL接続用のファイル用意】 sudo touch /etc/postfix/smtpd_scache.pag sudo touch /etc/postfix/smtpd_scache.dir 【serviceの登録】 sudo cp -ip services services.bak ◯コメントアウト urd 465/tcp # URL Rendesvous Directory for SSM ◯追記 smtps 465/tcp # SMTP over SSL/TLS 【postfixコマンド】 起動 sudo postfix start 今動作しているSMTPサーバーの認証形式などの表示 EHLO localhost メールの送信 mail ユーザ名 メールの確認 mail 停止 sudo postfix stop 設定ファイルのチェック sudo postfix check node.js node.jsの設定 wgetのインストール sudo port install wget nvmのインストール git clone git //github.com/creationix/nvm.git ~/.nvm source ~/.nvm/nvm.sh nvm install v0.4.0 nvm use v0.4.0 node --version .bash if [ -f ~/.bashrc ] ; then . ~/.bashrc fi if -f ~/nvm/nvm.sh; then source ~/nvm/nvm.sh if which nvm /dev/null 2 1 ;then _nodejs_use_version="v0.4.0" if nvm ls | grep -F -e "${_nodejs_use_version}" /dev/null 2 1 ;then nvm use "{_nodejs_use_version}" /dev/null fi unset _nodejs_use_version fi fi
https://w.atwiki.jp/a3mi22/pages/86.html
LEFT OUTER JOIN と 文字列連結 【データ】 (1)部署マスタテーブル(busho) 部署ID(busho_id) - NOT NULL 部署名(busho_name) - NOT NULL (2)社員マスタテーブル(shain) 社員ID(shain_id) - NOT NULL 社員名(shain_name) - NOT NULL (3)所属部署テーブル(shozoku) 部署ID(busho_id) - NOT NULL 社員ID(shain_id) - NOT NULL (4)基本連絡先テーブル(renraku) 社員ID(shain_id) - NOT NULL メールアドレス(email) - NOT NULL メールアドレス2(email2) - NOT NULL (5)緊急連絡先テーブル(kinkyu_renraku) 社員ID(shain_id) - NOT NULL メールアドレス(email) - NOT NULL メールアドレス2(email2) - NOT NULL 【やりたいこと】 部署名、社員名、基本連絡先、緊急連絡先を取得する。 基本連絡先、緊急連絡先は、メールアドレスが複数登録されている場合、" "で区切って一つの項目として取得する。 【SQL】 SELECT shain.shain_name, busho.busho_name, case renraku.email2 then renraku.email else renraku.email || || renraku.email2 end as renraku_email, case kinkyu_renraku.email2 then kinkyu_renraku.email else kinkyu_renraku.email || || kinkyu_renraku.email2 end as kinkyu_email FROM busho, shozoku, shain left outer join renraku on (shain.shain_id = renraku.shain_id) left outer join kinkyu_renraku on (shain.shain_id = kinkyu_renraku.shain_id) WHERE shain.shain_id = shozoku.shain_id AND shozoku.busho_id = busho.busho_id AND ORDER BY busho.busho_id asc, shain.shain_id asc 【解説】 LEFT OUTER JOIN shain left outer join renraku on (shain.shain_id = renraku.shain_id) 基本連絡先テーブルに該当する社員の情報がなかったら、検索結果0件にするのではなく、値にNULLを設定する。 CASE文 と 文字連結 case kinkyu_renraku.email2 then kinkyu_renraku.email else kinkyu_renraku.email || || kinkyu_renraku.email2 end as kinkyu_email 緊急連絡先のメールアドレス2が空文字だったらメールアドレス1だけを表示する。 それ以外だった場合は、緊急連絡先メールアドレス1と緊急連絡先メールアドレス2を" "でつないで表示する。 INSERTするときに値に改行コードを入れたい 【SQL文】 (1)INSERT INTO a values (0000, あい || chr(13) || chr(10) || うえお ); (2)INSERT INTO a values (0001, かき || chr(10) || くけこ ); 【解説】 (1) aテーブルの2つ目の項目を「あい\r\nうえお」で登録 (2) aテーブルの2つ目の項目を「かき\nくけこ」で登録 システム日付の月だけを取得したい。(Oracle) 例)AAAテーブルのMONTHというカラムを今の月に更新したい。 UPDATE AAA SET MONTH = TO_CHAR(SYSDATE, MM ); 結果) 今日の日付 2010/06/16 AAAテーブル MONTH 6 合計: -
https://w.atwiki.jp/becomefumo/pages/57.html
Scuffed BecomeFumoのアイテムを解説するページです。 ロケットランチャー ロケットランチャー。BecomeFumoのものと同じようにロケットジャンプに使える。insert logo hereの店においてある。 重力銃 ハーフライフ2に登場する重力銃。ビームのようなもので他のプレイヤーを捕まえて遊べる。どちらかといえばGarry's MOD(やHalf-life 2 Beta)のPhysGunに近い挙動。insert logo hereの店においてある。 ポータルガン Portalシリーズに登場するポータルガン。クリックするたびに、指している方向の壁に青とオレンジのポータルを設置できる。触れることでそれぞれの間を行き来することができる。insert logo hereの店においてある。 ちくわ? 巨大なカルパスに穴が空いたような見た目の棒。なんなのかわからない。クリックすると振り回す。insert logo hereの店においてある。 ラジオガン ラジオが組み込まれた巨大な銃。クリック押しっぱなしで連射できる。反動が強烈で、連射しているとふもがどんどん後ずさりする。insert logo hereの店においてある。 ピザ ピザ。クリックで食べる。ピザ屋さんにおいてある。 電子レンジ 電子レンジ。クリックで設置。一定時間後に爆発する。巨大な電子レンジが置かれているところの下の層にある。 ルンバ ルンバ。クリックで設置。上に乗ることで操作可能。ピザ屋さんの中と、レーストラックのそばの机の上に置いてある。 ボート Minecraftのものによく似たボート。水辺でクリックして設置。上に乗ることで操作可能。
https://w.atwiki.jp/naobe/pages/158.html
ソフトウェア製品に戻る 使用したインストールファイル PyQt4-4.10.1-gpl-Py3.3-Qt5.0.2-x32.exe 名前から見ると、PyQtは4-4.10.1、Pyrthonは、3.3、Qtは5.0.2 PyQtとは QtのPythonラッパー。PythonでQtを使ったGUIアプリケーションを作成できる。Linuxでも同じソースで動作する(Python,Qtのバージョンが同じであれば)。ドキュメントは、 Python /Lib/site-packages/PyQt4/doc下にある。 QtDesighner 画面作成ツール。左側にある部品を選択してWindow上に配置して、外見を確認しながら画面を作成するツール。慣れれば、コーディングするより早く画面を作成できる。 作成したファイルは、*.uicという名前になる。 Python /Lib/site-packages/PyQt4/pyuic4.batを起動して、*.pyに変換して使う。 プログラムサンプル httpd.conf簡易表示画面 httpd.confをTreeViewを使って表示する画面。ディレクティブを指定してポップアップメニューを表示するとディレクティブ説明ダイアログを表示する。httpd.confはファイルダイアログを使って選択する。以前使用したhttpd.confはメニューに履歴として残す。履歴を選択するとファイルを開く。 【起動時】 【メニューを開く】 【ファイルダイアログ】 【TreeViewにhttpd.confを表示】 【ディレクティブを選択して説明ダイアログを表示】 【メニューから以前使用したhttpd.confを選択】 プログラム 【httpdconfmain.py 本体】 PyQtのサンプルプログラム(editabletreemodel.py)を修正して作成。TreeViewのリフレッシュで苦労した。Google検索して試行錯誤のうえTreeModelのmodelresetシグナルを発行して動いた。TreeWidgetを使えば簡単らしい。 # -*- coding utf-8 -*- """ httpd.conf管理画面 httpd.confを読み込み表示する。 """ import sys from PyQt4.QtCore import QAbstractItemModel,QModelIndex,Qt,pyqtSlot,QPoint from PyQt4.QtGui import QWidget,QMenu,QApplication,QAction,QFileDialog,QMainWindow from gui.httpdconfmainui import * from dirDescDialog import DirDescDialog from util.HistoryFile import HistoryFile import json """ ツリーアイテム TreeViewの行に相当する """ class TreeItem(object) def __init__(self, data, parent=None) self.parentItem = parent self.itemData = data self.childItems = [] def child(self, row) return self.childItems[row] def childCount(self) return len(self.childItems) def childNumber(self) if self.parentItem != None return self.parentItem.childItems.index(self) return 0 def columnCount(self) return len(self.itemData) def data(self, column) return self.itemData[column] """ 子領域を作成する @param psition 子配列の追加する子領域位置 @param count 行数 @param columns 列数 """ def insertChildren(self, position, count, columns) if position 0 or position len(self.childItems) return False for row in range(count) data = [None for v in range(columns)] item = TreeItem(data, self) self.childItems.insert(position, item) return True def insertColumns(self, position, columns) if position 0 or position len(self.itemData) return False for column in range(columns) self.itemData.insert(position, None) for child in self.childItems child.insertColumns(position, columns) return True def parent(self) return self.parentItem def removeChildren(self, position, count) if position 0 or position + count len(self.childItems) return False for row in range(count) self.childItems.pop(position) return True def removeColumns(self, position, columns) if position 0 or position + columns len(self.itemData) return False for column in range(columns) self.itemData.pop(position) for child in self.childItems child.removeColumns(position, columns) return True def setData(self, column, value) if column 0 or column = len(self.itemData) return False self.itemData[column] = value return True """ ツリーモデル """ class TreeModel(QAbstractItemModel) def __init__(self, headers, parent=None) super(TreeModel, self).__init__(parent) self.rootData = [header for header in headers] self.rootItem = TreeItem(self.rootData) # 親スタック self.parents = [self.rootItem] #self.setupModelData(data.split("\n"), self.rootItem) """ ヘッダ以外のデータをクリア """ def clearData(self) self.rootItem = TreeItem(self.rootData) self.parents = [self.rootItem] pass def columnCount(self, parent=QModelIndex()) return self.rootItem.columnCount() def data(self, index, role) if not index.isValid() return None if role != Qt.DisplayRole and role != Qt.EditRole return None item = self.getItem(index) return item.data(index.column()) def flags(self, index) if not index.isValid() return 0 return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable def getItem(self, index) if index.isValid() item = index.internalPointer() if item return item return self.rootItem def headerData(self, section, orientation, role=Qt.DisplayRole) if orientation == Qt.Horizontal and role == Qt.DisplayRole return self.rootItem.data(section) return None def index(self, row, column, parent=QModelIndex()) if parent.isValid() and parent.column() != 0 return QModelIndex() parentItem = self.getItem(parent) childItem = parentItem.child(row) if childItem return self.createIndex(row, column, childItem) else return QModelIndex() def insertColumns(self, position, columns, parent=QModelIndex()) self.beginInsertColumns(parent, position, position + columns - 1) success = self.rootItem.insertColumns(position, columns) self.endInsertColumns() return success def insertRows(self, position, rows, parent=QModelIndex()) parentItem = self.getItem(parent) self.beginInsertRows(parent, position, position + rows - 1) success = parentItem.insertChildren(position, rows, self.rootItem.columnCount()) self.endInsertRows() return success def parent(self, index) if not index.isValid() return QModelIndex() childItem = self.getItem(index) parentItem = childItem.parent() if parentItem == self.rootItem return QModelIndex() return self.createIndex(parentItem.childNumber(), 0, parentItem) def removeColumns(self, position, columns, parent=QModelIndex()) self.beginRemoveColumns(parent, position, position + columns - 1) success = self.rootItem.removeColumns(position, columns) self.endRemoveColumns() if self.rootItem.columnCount() == 0 self.removeRows(0, self.rowCount()) return success def removeRows(self, position, rows, parent=QModelIndex()) parentItem = self.getItem(parent) self.beginRemoveRows(parent, position, position + rows - 1) success = parentItem.removeChildren(position, rows) self.endRemoveRows() return success def rowCount(self, parent=QModelIndex()) parentItem = self.getItem(parent) return parentItem.childCount() def setData(self, index, value, role=Qt.EditRole) if role != Qt.EditRole return False item = self.getItem(index) result = item.setData(index.column(), value) if result self.dataChanged.emit(index, index) return result def setHeaderData(self, section, orientation, value, role=Qt.EditRole) if role != Qt.EditRole or orientation != Qt.Horizontal return False result = self.rootItem.setData(section, value) if result self.headerDataChanged.emit(orientation, section, section) return result """ TreeModelセットアップ @param lineData 設定ファイル行 """ def setupModelData(self, lineData) # " /"が見つかったら親をpop if lineData[0 2] == " /" self.parents.pop() # " "が見つかったら親ノード作成 elif lineData[0 1] == " " # ' ',' 'を削除 lineData = lineData[1 -1] columnData = lineData.split(" ", 1) self.insertChild(columnData) # 追加した子を親として追加 self.insertParent() else #最初のブランクで2列に分解 columnData = lineData.split(" ", 1) # 親にノード登録 self.insertChild(columnData) """ TreeModelに子ノードを登録する @param columnData 列データ(配列) """ def insertChild(self, columnData) parentItem = self.parents[-1] # 親ノードに子供の領域を作成する parentItem.insertChildren(parentItem.childCount(), 1, self.rootItem.columnCount()) # 子供の領域にデータを設定 for column in range(len(columnData)) parentItem.child(parentItem.childCount() -1).setData(column, columnData[column]) """ TreeModelに親ノード登録 """ def insertParent(self) parents = self.parents # 最後に登録した親 parent = parents[-1] parents.append( parent.child( parent.childCount() - 1) ) """ httpd.conf GUIクラス """ class HttpdConfMain(Ui_MainWindow, QMainWindow) # 計算機のクラス(上のGUIクラスを継承) """ コンストラクタ """ def __init__(self) super(QWidget, self ).__init__() self.setupUi(self) # GUIを設定(これがないとボタンなどが配置されない) # メニューバー設定 #-- アクション rfAction = QAction("開く( o)", self) # 設定ファイル読み込み exitAction = QAction("終了( x)", self) #-- ファイルメニュー self.fileMenu = self.menubar.addMenu("ファイル( F)") self.fileMenu.addAction(rfAction) rmenu = self.fileMenu.addMenu("最近開いたファイル( r)") self.fileMenu.addAction(exitAction) #-- 最近開いたファイル self.hfile = HistoryFile("hist.dat", 5) for f in self.hfile.fileArray rcAction = QAction(f, self) rcAction.triggered.connect(self.readMenuFile) rmenu.addAction(rcAction) # TreeModel作成 headers = ("ディレクティブ", "属性") self.treeModel = TreeModel(headers) # TreeViewにモデルをセット self.treeView.setModel(self.treeModel) # 1列目の幅を設定 self.treeView.setColumnWidth(0, 200) # ポップアップメニュー作成用設定 self.treeView.setContextMenuPolicy(Qt.CustomContextMenu) # ヘッダをセンタリング self.treeView.header().setDefaultAlignment(Qt.AlignHCenter) # ディレクティブ説明ファイル読み込み self.dirDescMap = self.readDirDesc() # シグナル・スロット #-- ファイルメニュー選択でファイル選択ダイアログ表示 rfAction.triggered.connect(self.selectFile) #-- 終了選択でアプリケーション終了 exitAction.triggered.connect(self.exitWin) #-- 右クリックによるポップアップメニュー起動シグナル用スロット self.treeView.customContextMenuRequested.connect(self.showPopUpMenu) """ ポップアップメニュー起動 @param pos シグナル発生位置(QPoint) """ @pyqtSlot(QPoint) def showPopUpMenu(self, pos) # 選択したディレクティブ selectDetective = self.treeView.indexAt(pos).internalPointer().data(0) # スクロールエリア内だとposは、エリア内の相対位置になるためグローバルポジションに変換する。 globalPos = self.treeView.mapToGlobal(pos); myMenu = QMenu(self) action = myMenu.addAction("説明") action.setData(selectDetective) # 選択が終了するまで待つ? selectedItem = myMenu.exec(globalPos) # 選択されていたら説明ダイアログを起動する if selectedItem dialog = DirDescDialog() if not selectedItem.data() in self.dirDescMap dialog.textEdit.setText("設定なし") else dialog.textEdit.setText(self.dirDescMap[selectedItem.data()]) # ダイアログの応答結果 result = dialog.exec() #print("result %d" % result) """ ファイルダイアログを表示してファイルを選択する。 選択したファイルを読み込む """ @pyqtSlot() def selectFile(self) fd = QFileDialog(self) self.fileName = fd.getOpenFileName() if self.fileName == '' return # ファイル履歴にファイル名を保管 self.hfile.insert(self.fileName) self.readConf() """ メニューの「最近開いたファイル」で選択したファイルを読み込む """ @pyqtSlot() def readMenuFile(self) # 送り元のアクションを取得する rcAction = self.sender() print("rcAction text %s" % rcAction.text()) self.fileName = rcAction.text() if self.fileName == '' return self.readConf() """ httpd.confを読み込む """ def readConf(self) # データクリア self.treeModel.clearData() # TreeViewリフレッシュのため self.treeModel.modelReset.emit() # 読み込み f = open(self.fileName, "r") while True line = f.readline() # EOFに到達したら終了 if not line break; # 改行を削除 line = line[ -1] line = line.strip().rstrip() # コメントスキップ if line[0 1] == "#" continue # 空行スキップ if len(line) == 0 continue # 設定行をモデルへ挿入 self.treeModel.setupModelData(line) f.close() """ ウィンドウを終了する """ def exitWin(self) # ファイル名を保管する self.hfile.close() app.quit() win.close() # 不要なはずだが?? """ ディレクティブ設定ファイル読み込み """ def readDirDesc(self) f = open("../conf/dirDesc.conf", "r", encoding="utf8") fullText = "" while True # ファイルから1行読み込み line = f.readline() # コメントは飛ばす if line[0 1] == "#" continue # EOFに到達したら終了 if not line break; fullText = fullText + line f.close() return json.loads(fullText) if __name__ == "__main__" app = QApplication(sys.argv) win = HttpdConfMain() win.show() sys.exit(app.exec_()) 【httpdconfmainui.py UIクラス】 QtDesignerを使って作成 # -*- coding utf-8 -*- # Form implementation generated from reading ui file 'httpdconfmain.ui' # # Created Tue Jun 11 23 56 11 2013 # by PyQt4 UI code generator 4.10.1 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError def _fromUtf8(s) return s try _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig) return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError def _translate(context, text, disambig) return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object) def setupUi(self, MainWindow) MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(660, 582) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.treeView = QtGui.QTreeView(self.centralwidget) self.treeView.setObjectName(_fromUtf8("treeView")) self.verticalLayout.addWidget(self.treeView) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 660, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow) MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 【dirDescDialogui.py ダイアログUI】 # -*- coding utf-8 -*- # Form implementation generated from reading ui file 'dirDescDialog.ui' # # Created Sat Jun 1 10 11 59 2013 # by PyQt4 UI code generator 4.10.1 # # WARNING! All changes made in this file will be lost! """ ディレクティブ説明ダイアログ """ from PyQt4 import QtCore, QtGui def _fromUtf8(s) return s try _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig) return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError def _translate(context, text, disambig) return QtGui.QApplication.translate(context, text, disambig) class Ui_dirDesc(object) def setupUi(self, dirDesc) dirDesc.setObjectName(_fromUtf8("dirDesc")) dirDesc.resize(331, 178) dirDesc.setModal(True) self.verticalLayout = QtGui.QVBoxLayout(dirDesc) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.textEdit = QtGui.QTextEdit(dirDesc) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.verticalLayout.addWidget(self.textEdit) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.closeButton = QtGui.QPushButton(dirDesc) self.closeButton.setObjectName(_fromUtf8("close")) self.horizontalLayout.addWidget(self.closeButton) self.verticalLayout.addLayout(self.horizontalLayout) self.retranslateUi(dirDesc) QtCore.QMetaObject.connectSlotsByName(dirDesc) def retranslateUi(self, dirDesc) dirDesc.setWindowTitle(_translate("dirDesc", "Dialog", None)) self.closeButton.setText(_translate("dirDesc", "閉じる", None)) 【HistoryFile.py 履歴ファイルユーティリティ】 # -*- coding utf-8 -*- """ Created on 2013/06/14 @author """ """ 履歴ファイルユーティリティ 履歴ファイルを作成し、履歴を追加する。 履歴は保管個数を持ち、古い履歴から削除する。 """ from os.path import isfile class HistoryFile """ コンストラクタ @param fileName 履歴ファイル名 @param cnt 保管ファイル個数 """ def __init__(self, fileName, cnt) self.fileName = fileName # 履歴ファイル名 self.cnt = cnt # 保管ファイル個数 self.fileArray = [] # ファイル履歴 # 履歴ファイル有無を確認 if isfile(self.fileName) # ファイル履歴に保管 file = open(self.fileName, "r", encoding="utf-8") while True # ファイルから1行読み込み line = file.readline() # EOFに到達したら終了 if not line break; # 改行を削除 line = line[ -1] # ファイル名を保管 self.fileArray.append(line) file.close() """ ファイル履歴にファイル名を追加する @param fileName 追加するファイル名 """ def insert(self, fileName) # ファイル履歴から指定したファイル名を除く self.fileArray = [ f for f in self.fileArray if f != fileName] # 指定個数なら先頭を削除 if len(self.fileArray) == self.cnt self.fileArray = self.fileArray[1 ] # 指定したファイル名を追加 self.fileArray.append(fileName) """ ファイル履歴を取得する """ def getFileArray(self) return self.fileArray """ 履歴ファイルにファイル履歴を書き込んで閉じる """ def close(self) # 履歴ファイルを作成する file = open(self.fileName, "w", encoding="utf-8") for fname in self.fileArray print(fname, file=file) file.close() if __name__ == "__main__" hist = HistoryFile("hist.dat", 5) hist.insert("a1") hist.insert("a2") hist.insert("a3") hist.insert("a4") hist.insert("a5") hist.insert("a6") hist.close() 【dirDesc.conf ディレクティブ説明ファイル】 # # Apache 2.4.7 ディレクティブ説明 # { "ServerRoot" "ServerRoot directory-path\n\nインストールしたサーバのベースディレクトリ", "Listen" "Listen [IP-address ]portnumber [protocol]\n\nサーバが listen するIP アドレスと ポート番号", "LoadModule" "LoadModule module filename\n\nオブジェクトファイルやライブラリをリンクし、使用モジュー ルの リストに追加する", "IfModule" " IfModule [!]module-file|module-identifier ... /IfModule \n\nモジュールの存在 するかしないかに応じて処理される ディレクティブを囲む。\n\nmodule-fileはServerRootからの相対ディレクトリで示す。module -identifierは、モジュールソースファイルのmod_を除いた部分に_moduleを追加したもの。\n【例】mod_auth_basic.c == auth_ba sic_module" }
https://w.atwiki.jp/styleshare/pages/119.html
[ん]で始まるサイト StyleShare 概要 このWiki内の各ページに現れるGoogle Adsense広告およびフッタに現れるWiki関連タグクラウド表示やWiki宣伝用エリア、さらには編集画面の邪魔な広告画像を非表示[display none]にします author:StyleShareOwner user.styleをインストール 広告非表示系:CSSリデザイン系 [ん]で始まるサイトなんて・・・あるのかな?
https://w.atwiki.jp/kobapan/pages/101.html
現在の文字コードを確認する いま何のコードを使っているか,何のコードで保存されるかは、左下を見る emacs 24 系で三桁になったらしい -uuu とか -uuS とか表示されている。記号の意味は、 u utf-8 S shift-jis E euc-jp uuu を 123 とすると 1 keyboard-cording-system 2 terminal-cording-system 3 buffer-file-cording-system 大文字小文字変換 M-u ; カーソルから1単語分小文字を大文字に変換 ( upcase ) M-l ; カーソルから1単語分大文字を小文字に変換 ( lowcase ) org-mode で行を折り返す設定 (setq org-startup-truncated nil) (defun change-truncation() (interactive) (cond ((eq truncate-lines nil) (setq truncate-lines t)) (t (setq truncate-lines nil)))) 過去にカットしたものを貼り付け Ctrl + y でカット or コピーした内容をカーソル位置にペースト 続けてAlt(Esc) + yを押すことで過去にカットしたものを貼り付け テンプレート .emacsに以下のような設定をして、 ;; テンプレートの保存先 (setq auto-insert-directory "~/.template/") (auto-insert-mode 1) ;; テンプレート挿入時に尋ねない (setq auto-insert-query nil) ;; テンプレートファイル名 (setq auto-insert-alist (append ( (html-mode . "template.html") ;; モード名で指定 ("\\.html$" . "template.html") ;; ファイル名で指定 ) auto-insert-alist)) 「~/.template/template.html 」を作成しておくと、新規HTMLファイルを編集する時には自動的にテンプレートファイルを挿入してくれる。 Meadow/Emacs memo テンプレートと更新時刻の入力 ブックマーク C-x r m RET ; 訪問先のファイルのポイント位置にブックマークを設定する。 C-x r l ; すべてのブックマークを一覧表示する(list-bookmarks)。 上記設定時に、ブックマークファイル`~/.emacs.bmk'へ勝手に保存してもらう.emacs (setq bookmark-save-flag 1) Emacsマニュアル ブックマーク 矩形 C-x r k ; 矩形カット C-x r o ; 矩形範囲分の空白挿入 C-x r t ; 矩形範囲を指定文字列で置換 C-x r y ; 矩形ペースト C-x r c ; 矩形範囲を空白で置換 C-x r r ; copy-rectangle-to-register レジスターに矩形領域を登録する C-x r i ; insert-register レジスターに登録された矩形領域を貼り付ける 行数と文字数 範囲を選択して、選択した範囲の行数と文字数が表示される。 M-= 差分 M-x ediff-buffers 現在編集中の位置へ後で戻ってくる C-x r spc 何か一文字 ; でマーク C-x r j ↑この一文字 ; でジャンプ Emacsマニュアル に位置を保存する レジスタにウィンドウ構成を保存する C-x r f r ; 全フレームのすべてのウィンドウの状態をレジスタrに保存する C-x r j r ; ウィンドウやフレームの構成をもとに戻す GNU Emacsマニュアル レジスタにウィンドウ構成を保存する C-s した際、検索条件を履歴から呼び出すには、 Alt + n 正規表現でバッファ内検索 編集中のバッファを正規表現でインクリメンタルサーチするキーバインド。 C-u C-s ; 上手いサーチ もしくは C-M-s 正規表現で問い合わせ型置換 C-M-% regex-string RET new-string RET または M-x query-replace-regexp RET regex-string RET newstring RET 問い合わせ状態になってからの便利コマンド この出現を置換してから、これ以上探索せずに終了する。 . (ピリオド) これ以降、問い合わせずに残りの出現すべてを置換する。 ! 誤って変更してしまった場合などに、 1つまえの出現箇所(あるいは置換してしまった出現箇所)に戻る。置換前に戻るわけではない。 ^ 例) ./Dixie/HOME/51u1PzxHmpL._SL500_AA300_.jpg を ./Dixie/HOME/AlbumArt.jpg に置換する。 /[^/]*.jpg ↓ /AlbumArt.jpg ウィンドサイズの変更 ターミナル接続でemacsを使っているとウィンドのサイズをマウスで変えられないので、以下のコマンドを使う。広げる方だけキーバインドが用意されている。 ウィンドサイズを縦に広げる M-x enlarge-window もしくは C-x ^ ウィンドサイズを横に広げる M-x enlarge-window-horizontally もしくは C-x } ウィンドサイズを縦に狭める M-x shrink-window ウィンドサイズを横に狭める M-x shrink-window-horizontally 現在いる関数を表示する設定 .emacsに以下を追加する。Lisp用? ;;; 現在の関数名をモードラインに表示 (which-function-mode 1)
https://w.atwiki.jp/styleshare/pages/118.html
[を]で始まるサイト StyleShare 概要 このWiki内の各ページに現れるGoogle Adsense広告およびフッタに現れるWiki関連タグクラウド表示やWiki宣伝用エリア、さらには編集画面の邪魔な広告画像を非表示[display none]にします author:StyleShareOwner user.styleをインストール 広告非表示系:CSSリデザイン系 [を]で始まるサイトなんて・・・あるのかな?
https://w.atwiki.jp/rubyperl/pages/25.html
?xml version="1.0" encoding="UTF-8"? root xmlns="http //www.w3s.org/xml/2/v2" config-lists config name="test" priority="0"/ /config-list /root 上記のようなXMLファイルに対して、JScriptとXMLDOMを使って、新規に要素を追加使用とした場合、追加した要素の属性として、xmlns=""が勝手に追加された。 追加する際に、createElement()を使っていたのだが、これがいけなかったらしい。 以下、msdnより転載。 Remarks Creating an element with this method is the same as using createNode where the type parameter value is NODE_ELEMENT and no namespace is specified. You cannot create a namespace-qualified element using the createElement method. Regardless of whether a namespace prefix is included in the tagName parameter, the namespaceURI property for the new element node is set to an empty string, "". An element node constructed as part of an XML document load operation will never have both a prefix and an empty namespace Uniform Resource Identifier (URI). You can only create a namespace-qualified element using the createNode method of the DOMDocument object. Although this method creates the new object in the context of this document, it does not automatically add the new object to the document tree. In other words, although the ownerDocument property of the new node points to this document object, the parentNode property is set to Null. To add the new object, you must explicitly call one of the node insert methods, insertBefore method, replaceChild method, or appendChild method. The nodeType property has the value NODE_ELEMENT. 代わりに、createNode()を使えとあったので、createNodeを使って実験してみたところ、名前空間を指定して追加すれば、xmlnsは勝手に付加されなかった。
https://w.atwiki.jp/mod-jplang/pages/45.html
MC1.7.10 最新版(Waila-1.5.10)の日本語langファイルです screen.button.waila=Waila screen.button.modules=モジュール screen.label.scale=大きさ screen.label.dragtuto=HUDにドラッグすると位置を設定できます screen.button.default=通常 screen.button.cancel=キャンセル screen.button.ok=了解 screen.button.yes=はい screen.button.no=いいえ screen.button.back=戻る screen.button.hidden=非表示 screen.button.visible=表示 screen.button.maintained=維持 screen.button.toggled=切替 choice.showhidewaila=Wailaを表示/非表示 choice.showhideidmeta=ID Metadataを表示 choice.toggledmaintained=切替/維持 choice.showliquids=液体 choice.shifttoggledblock=ス二ークで選択ブロックを切り替えられます choice.shifttoggledents=ス二ークで選択エンティティを切り替えられます screen.button.configureaspect=アスペクトを構成しています... enchant.title.name=名前 enchant.title.minlvl=最小レベル enchant.title.maxlvl=最大レベル enchant.title.weight=高さ enchant.label.enchantability=エンチャンタビリティ waila.keybind.wailaconfig=[Waila] 構成画面 waila.keybind.wailadisplay=[Waila] 表示/非表示 waila.keybind.liquid=[Waila] 液体を表示 waila.keybind.recipe=[Waila] レシピを表示 waila.keybind.usage=[Waila] 使用方法を表示 waila.keybind.testing=[Waila] テスト中 client.msg.norecipe=レシピが見つかりませんでした client.msg.nousage=使用法が見つかりませんでした hud.msg.none= 無 hud.msg.empty= 空 hud.msg.output=出力 hud.msg.input=入力 hud.msg.out=出力 hud.msg.in=入力 hud.msg.power=エネルギー hud.msg.storage=蓄電量 hud.msg.stored=保存済み hud.msg.any=いくつか hud.msg.mode=モード hud.msg.maxpower=最大エネルギー hud.msg.trigger=引金 hud.msg.maxio=最大IO hud.msg.send=送る hud.msg.recv=受け取る hud.msg.item=アイテム hud.msg.fluid=液体 hud.msg.energ=エネルギー hud.msg.frequency=周波数 hud.msg.owner=所有者 hud.msg.public=公的 hud.msg.restricted=制限有り hud.msg.private=私的 hud.msg.white=白色 hud.msg.orange=オレンジ色 hud.msg.magenta=マゼンタ色 hud.msg.lblue=水色 hud.msg.yellow=黄色 hud.msg.lime=ライム色 hud.msg.pink=ピンク色 hud.msg.gray=灰色 hud.msg.lgray=薄灰色 hud.msg.cyan=シアン色 hud.msg.purple=紫色 hud.msg.blue=青色 hud.msg.brown=茶色 hud.msg.green=緑色 hud.msg.red=赤色 hud.msg.black=黒色 hud.msg.growth=成長中 hud.msg.mature=成熟 hud.msg.off=オフ hud.msg.on=オン hud.msg.state=状態 hud.msg.delay=遅延 hud.msg.comparator=コンパレーター hud.msg.substractor=減算器 hud.msg.record=記録 hud.msg.offers=供給 hud.msg.demands=需要 option.appeng.monitorcontent=モニターのコンテンツ option.bb.content=バレルのコンテンツ option.bc.tankamount=液体の量 option.bc.tanktype=液体のタイプ option.enderstorage.colors=色 option.ic2.inputeumach=最大EU入力 [機械] option.ic2.inputeuother=最大EU入力 [他] option.ic2.inputeu=最大EU入力 option.ic2.outputeu=最大EU出力 option.ic2.storage=エネルギー貯蔵 option.ic2.consump=消費量を表示 option.ic2.tradeomat=Trade-O-Matリクエストを表示 option.thaumcraft.storedvis=コンデンサー格納 option.thermalexpansion.energyhandler=RF貯蔵量を表示 option.thermalexpansion.energycell=ECell 入/出を表示 option.thermalexpansion.fluidtype=液体のタイプを表示 option.thermalexpansion.fluidamount=液体の量を表示 option.thermalexpansion.tankmode=タンクのモードを表示 option.thermalexpansion.tesssendrecv=テセラクトモード option.thermalexpansion.tessfreq=テセラクト周波数 option.thermalexpansion.owner=所有者を表示 option.thermalexpansion.conditemmode=アイテム導管モードを表示 option.vanilla.spawntype=スポナーのタイプ option.vanilla.growthvalue=成長値 option.vanilla.leverstate=レバーの状態 option.vanilla.repeater=リピーターの遅延 option.vanilla.comparator=比較モード option.vanilla.redstone=レッドストーンパワー option.vanilla.jukebox=ジュークボックスディスク option.vanilla.silverfish=シルバーフィッシュを非表示 option.etb.displaydata=ソケットデータを表示 option.enderio.inout=入力/出力 を表示 option.enderio.storage=貯蔵されたMJを表示 option.enderio.owner=ブロックの所有者を表示 option.enderio.channel=ハイパーキューブチャンネルを表示 option.bcapi.storage=貯蔵されたMJを表示 option.bcapi.consump=最大パワーを表示 option.bcapi.trigger=トリガーとなるエネルギーを示す option.pr.showio=ゲートIOを表示 option.pr.showdata=ゲートのデータを表示 option.extrautilities.fluidamount=液体の量を表示 option.openblocks.fluidamount=液体の量を表示 option.railcraft.fluidamount=液体の量を表示 option.secretrooms.hide=迷彩ブロックを非表示 option.carpenters.hide=迷彩ブロックを非表示 option.stevescarts.showall=データを表示 option.stevescarts.colorblind=色覚異常モード option.stevescarts.shifttoggle=シフト切替 option.general.showhp=エンティティの体力を表示 option.general.showcrop=作物の成長を表示 option.thaumcraft.aspects=アスペクトを表示 コメント コメント欄の運営・編集方針に関してはコメント欄方針を参照してください。 このコメント欄はwikiの情報充実のため、追記がしやすいよう設けた物なので、編集が苦手な方は以下のコメントフォームへ書き込んでください。後に編集者が追記等をします。 表示される親コメには限りがあります。返信の際は返信したいコメント横のチェックを付けて返信するようご協力お願いします。 コメログ:支援系mod/waila/MC1.7.10 名前 バージョン選択に戻る トップページに戻る
https://w.atwiki.jp/c21coterie/pages/525.html
1202 Mobile Phone Coverage http //judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1202 簡単な問題。 左端から少しずつ走査して足しこんでいけば解ける。 範囲境界線上のx座標を全て網羅しy軸と平行に画面を切り取って後は少しずつ面積を足していくだけである。 もう少し賢い方法もある気はするが自前で思いついた方法を優先。 解答番号をprintfし忘れて一度不正解を食らったのはここだけの秘密。 私の場合問題はきちんと解けてるが最後のprintfで書き忘れで不正解というパタンが多い。 多分問題が解けて油断してるんだと思う。 #include stdio.h #include vector #include algorithm #include set int IN=1; int OUT=-1; struct point{ double lx,y,rx; int inOut; bool operator (const point p)const{ if(y!=p.y)return y p.y; return inOut p.inOut;//inが優先 } }; int no=1; void calc(int n){ double x,y,r; point p; std vector point points; std set double xset; for(int i=0;i n;i++){ scanf("%lf %lf %lf", x, y, r); //下 p.lx=x-r; p.rx=x+r; p.y=y-r; p.inOut=IN; points.push_back(p); p.y=y+r; p.inOut=OUT; points.push_back(p); xset.insert(x-r); xset.insert(x+r); } std sort(points.begin(),points.end()); double hLen,ans=0,dx; int inCount; bool nextIn; std set double iterator it=xset.begin(); x=(*it); while(it!=xset.end()){ //x座標の小さい方から切り分けていく it++; if(it==xset.end())break; dx=(*it)-x; x=(*it); inCount=0; hLen=0.0; nextIn=true; //printf("%lf ",x); for(int lp=0;lp points.size();lp++){ p=points[lp]; //printf("(%.2lf %.2lf)",x,p.rx); //切り分けた範囲をy座標の小さい方から走査してエリアに入る入らないを調べてく if(p.lx x x =p.rx){ if(nextIn==true){ inCount=1; y=p.y; //printf(" %.2lf ",p.y); nextIn=false; }else{ inCount+=p.inOut; if(inCount==0){ nextIn=true; //printf("(p.y=%.2lf,%.2lf)",p.y,y); hLen+=p.y-y; } //printf(" /%d %d/ ",p.inOut,inCount); } } } ans+=dx*hLen; //printf("(h=%lf dx=%lf x=%lf %lf)\n",hLen,dx,x,dx*hLen); } printf("%d %.2lf\n",no,ans); no++; } int main(){ int n; while(1){ scanf("%d", n); if(n==0)break; calc(n); } }